﻿Imports System.Text
Public Class frmDeterminacaoCalibre
    Inherits formPadrao



    Dim Sep As Char
    Dim Nombre As Double
    Public WithEvents ucPreambulo As New ucPreambulo
    Private nomeDiretorio As String = Nothing
    Public WithEvents btnLimpar As System.Windows.Forms.Button
    Private registro As New registroVO
    Private mensagem As String
    Private erroNivel As Integer = 0
    Private tipoAvaliacao As String

    Public Property getUcPreambulo() As ucPreambulo
        Get
            Return ucPreambulo
        End Get
        Set(ByVal value As ucPreambulo)
            ucPreambulo = value
        End Set
    End Property
  


    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()
        pnlDados.Controls.Add(ucPreambulo)
        If Not DesignMode Then
            Sep = Application.CurrentCulture.NumberFormat.NumberDecimalSeparator
            pnlDados.AutoSize = True
            pnlItens.AutoSize = True
            Me.AutoScroll = True


        End If
    End Sub

   
    Private Sub limpaDadosLista()

        cmbCalibre.SelectedIndex = 1
        chkAcidental.Checked = False
        chkNormal.Checked = False
        chkPerdaMassa.Checked = False
        txtPeso.Value = 0


    End Sub

    Private Sub TextboxNumeric_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs)

        Dim nonNumberEntered As Boolean

        nonNumberEntered = True

        If (e.KeyChar >= Convert.ToChar(48) AndAlso e.KeyChar <= Convert.ToChar(57)) OrElse e.KeyChar = Convert.ToChar(8) OrElse e.KeyChar = Convert.ToChar(44) Then

            nonNumberEntered = False

        End If

        If nonNumberEntered = True Then

            ' Stop the character from being entered into the control

            ' since it is non-numerical.

            e.Handled = True

        Else

            e.Handled = False

        End If

    End Sub

    


    '--------------------------------------------------------------------------------------------------------------------------------
    ' FUNÇÃO QUE IRÁ GERAR O LAUDO
    '--------------------------------------------------------------------------------------------------------------------------------


    Private Sub geraLaudo()

        generica.tempo = Now
        Dim oWordTemp As New WordAppl
        Dim total As Double = 0
        Dim registroBo As New registroBO
        Dim regBO As New registroBO

        '-----------------------------------------------------------------------------------------
        ' ABRE O ARQUIVO WORD
        '-----------------------------------------------------------------------------------------

        If registroGlobal.registroPincipal.ID_REGISTRO > 0 Or ucPreambulo.ehNovo Then

            erro.SetError(txtComprimento, String.Empty)
            erro.SetError(txtPeso, String.Empty)
            erro.SetError(txtPeso, String.Empty)
            pb.zeraContador()
            pb.stepBarra(10)
            pb.Visible = True
            pb.stepBarra(10)
            '-----------------------------------------------------------------------------------------
            ' GRAVA REGISTRO NA BASE DE DADOS
            '-----------------------------------------------------------------------------------------
            Try

                If generica.gravaBanco Then
                    pb.stepBarra(10)

                    '------------------------------------------------------------------------------------
                    ' VERFICA SE É UM NOVO REGISTRO OU SE É UM REGISTRO JÁ ARMAZENADO NA BASE DE DADOS
                    '------------------------------------------------------------------------------------
                    pb.stepBarra(10)

                    Dim provas As New StringBuilder
                    Dim textoProva As String = String.Empty

                    For Each ELEMENTO In gridCalibre.Rows(1).ToString
                        provas.Append(" PROJÉTIL CALIBRE :" & ELEMENTO.ToString)
                    Next
                    If provas.ToString.Length > 250 Then
                        textoProva = provas.ToString.Substring(0, 250)
                    Else
                        textoProva = provas.ToString
                    End If
                    pb.stepBarra(10)

                    Dim registroGravado As Integer

                    '---------------------------------------------------------------------------------
                    'VERIFICA SE O REGISTRO ESTÁ BLOQUEADO POR OUTRO USUÁRIO
                    '--------------------------------------------------------------------------------


                    If registroGlobal.registroPincipal.ID_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO = False Then

                        '-----------------------------------------------------------------------------------------
                        ' RETORNO O NOME DO DIRETORIO A SER CRIADO
                        '-----------------------------------------------------------------------------------------
                        nomeDiretorio = generica.retornaNomeDiretorio(ucPreambulo.getAno, _
                                                                   ucPreambulo.getNumeroLaudo, "DETERMINACAO DE CALIBRE " & tipoAvaliacao, ucPreambulo.getIndiciado, ucPreambulo.getVitima)

                        registroGravado = regBO.updateRegistro(registroGlobal.registroPincipal, _
                                                               textoProva, ucPreambulo.getIdPeritoSelecionado, _
                                                               nomeDiretorio, ucPreambulo)
                        pb.stepBarra(10)
                        mensagem = (" O laudo n°" & registroGravado & " foi atualizado com sucesso na base de dados. Clique no ícone do WORD para visualizar o laudo.")
                        registroGlobal.registroPincipal = registroBo.getRegistroSimplificado(registroGravado, ucPreambulo.getAno)
                    Else

                        Dim reg As New registroVO
                        Dim ultimo As Integer = regBO.getUltimoRegistro
                        Dim registroTemporario As Integer = 0
                        If ultimo <> ucPreambulo.getNumeroLaudo Then
                            registroTemporario = ucPreambulo.getNumeroLaudo
                            ucPreambulo.getNumeroLaudo = ultimo
                        End If
                        '-----------------------------------------------------------------------------------------
                        ' RETORNO O NOME DO DIRETORIO A SER CRIADO
                        '-----------------------------------------------------------------------------------------
                        nomeDiretorio = generica.retornaNomeDiretorio(ucPreambulo.getAno, _
                                                                   ucPreambulo.getNumeroLaudo, "DETERMINACAO DE CALIBRE " & tipoAvaliacao, ucPreambulo.getIndiciado, ucPreambulo.getVitima)

                        reg = generica.populaRegistro(ucPreambulo, generica.retornaNomeArquivoCompleto(nomeDiretorio & ".doc", nomeDiretorio), textoProva)
                        registroGravado = regBO.insereRegistro(reg)
                        registroGlobal.registroPincipal = registroBo.getRegistroSimplificado(registroGravado, ucPreambulo.getAno)
                        If registroTemporario = 0 Then
                            mensagem = (" O laudo n°" & registroGlobal.registroPincipal.NUM_REGISTRO & " foi inserido com sucesso na base de dados. Clique no ícone do WORD para visualizar o laudo.")
                        Else
                            mensagem = (" O laudo n°" & ultimo & " foi inserido com sucesso na base de dados. O laudo não foi gravado com o número inicial " & registroTemporario & " pelo fato de outro usuário ter inserido este número de laudo no banco de dados. Clique no ícone do WORD para visualizar o laudo.")
                        End If
                        pb.stepBarra(10)
                    End If
                    pb.stepBarra(10)
                    '------------------------------------------------------------------------------------
                    ' INSERE DADOS NA TABELA PONTUACAO
                    '------------------------------------------------------------------------------------

                    Dim pontuacaobo As New pontuacaoBO
                    Dim pontuacao As New pontuacaoVO
                    Dim i As Integer

                    If ucPreambulo.ehNovo Then
                        With pontuacao
                            .USUARIO = New usuarioVO With {.ID_USUARIO = ucPreambulo.getIdPeritoSelecionado}
                            .REGISTRO = New registroVO With {.ID_REGISTRO = registroGlobal.registroPincipal.ID_REGISTRO}
                            .PONTUACAO = registroGlobal.registroPincipal.NATUREZA.PONTOS_ATENDIMENTO
                            .TIPO_OCORRENCIA = "ATENDIMENTO"
                            .DATA_ALTERACAO = Now
                        End With

                        i = pontuacaobo.inserePontuacao(pontuacao)

                    Else
                        i = pontuacaobo.upDatePontuacao(ucPreambulo.getIdPeritoSelecionado, registroGlobal.registroPincipal)
                    End If

                Else
                    mensagem = ("O sistema está configurado para não gravar registros na base de dados do sistema de registro eletrônico. Para habilitar, clique em configurações > Configurar aplicação e marque a opção <<SIM>>>. Apenas o laudo de n° " & ucPreambulo.getNumeroLaudo & " será gerado. Clique no ícono do WORD para visualizar o documento.")
                End If

            Catch ex As Exception
                generica.encerraProcessosWord()
                habilita(False, False, False, False)
                generica.gravaErro(ex)
                erroNivel = 1
                Exit Sub
            End Try

            Try

                Dim diretorio As String = System.Configuration.ConfigurationManager.AppSettings("dirTemplateword")
                oWordTemp.OpenModelo("determCalibresMultiplos.dot")
                oWordTemp.SaveAs(nomeDiretorio, nomeDiretorio & ".doc")
                oWordTemp.Quit()
                oWordTemp = Nothing

                '------------------------------------------------------------------------------------------------
                ' CRIA O PREMABULO
                '------------------------------------------------------------------------------------------------
                Dim oWord As New WordAppl
                oWord.Open(nomeDiretorio, nomeDiretorio & ".doc")
                oWord.criaPreambulo(ucPreambulo)
               
                '--------------------------------------------------------------------------------------------
                ' CHAMA ROTINA PARA LIMPAR CAMPOS DO CONTROLE E DO DATAGRID VIEW
                '-----------------------------------------------------------------------------------------------------------------------
                pb.stepBarra(10)
                pb.txtMensagem.Text = "Criando o cabeçalho do documento word"
                '------------------------------------------------------------------------------------------------
                ' INSERE ITENS NA TABELA DO DOCUMENTO WORD
                '------------------------------------------------------------------------------------------------
                pb.stepBarra(10)
                pb.txtMensagem.Text = "Inserindo informações no documento word criado"
                '------------------------------------------------------------------------------------------------
                ' VERIFICA SE O EXAME DEU POSITIVO
                '------------------------------------------------------------------------------------------------

                Dim textoMaterial As String = Nothing

                If gridCalibre.RowCount > 1 Then
                    textoMaterial = "Projéteis enviados para exames em "
                Else
                    textoMaterial = "Projétil enviado para exames em "
                End If

                oWord.insereDadosTabela(gridCalibre, 2)

                Dim textoInvolucroIC As New StringBuilder
                Dim textoInvolucroAut As New StringBuilder
                Dim textoPluralSingular As String = Nothing


                If cmbInvolucro.Text.ToLower.Equals("invólucro de segurança") Then
                    textoInvolucroIC.Append("Anexo, devolve-se o restante do material examinado em ").Append(cmbInvolucro.Text).Append("nº ").Append(txtInvolucroIC.Text).Append(".")
                Else
                    textoInvolucroIC.Append("Anexo, devolve-se o restante do material examinado em ").Append(cmbInvolucro.Text).Append(".")
                End If

                oWord.FindAndReplacement("<<txtInvolucroIC>>", textoInvolucroIC.ToString)
                oWord.criaAssinatura(ucPreambulo)

                oWord.Save()
                oWord.Quit()
                oWord = Nothing
                pb.stepBarra(10)
                pb.txtMensagem.Text = "Finalizando o documento"
            Catch exc As Exception
                generica.encerraProcessosWord()
                generica.gravaErro(exc)
                erroNivel = 2
                Exit Sub
            End Try
        Else
            '----------------------------------------------------------------------------------------------------------------------------
            ' CASO SEJA UM ARQUIVO QUE JÁ SE ENCONTRA CADASTRADO NA BASE DE DADOS
            '----------------------------------------------------------------------------------------------------------------------------
            If registroGlobal.registroPincipal.ID_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO Then
                habilita(False)
                mensagem = ("O laudo n° " & ucPreambulo.getNumeroLaudo & "/" & ucPreambulo.getAno & " já existe registrado na base de dados.Clique no ícone do WORD para visualizar o laudo.")
            Else
                mensagem = ("O laudo n° " & ucPreambulo.getNumeroLaudo & "/" & ucPreambulo.getAno & " não foi encontrado na base de dados.")
            End If
        End If
        MsgBox(mensagem)
    End Sub
    Private Sub habilita(ByVal habilita As Boolean, _
                         Optional ByVal habilitaBarra As Boolean = Nothing, _
                         Optional ByVal habilitaVerWord As Boolean = Nothing, _
                         Optional ByVal habilitaNatureza As Boolean = False, _
                         Optional ByVal habilitaPainel As Boolean = False)

        ucPreambulo.btnVerWord.Visible = habilitaVerWord
        ucPreambulo.btnGeraLaudo.Enabled = habilita
        ucPreambulo.habilitaCampos(habilita)
        pnlItens.Enabled = habilitaPainel
        ucPreambulo.selecionaIdTipoPericia = ucPreambulo.ID_TIPO_PERICIA
        ucPreambulo.selecionaIdNatureza = ucPreambulo.ID_NATUREZA
        ucPreambulo.txtDataExame.Enabled = False
        ucPreambulo.pnlNatureza.Enabled = habilitaNatureza
        If Not IsNothing(habilitaBarra) Then
            pb.Visible = habilitaBarra
            pb.zeraContador()
        End If
    End Sub

    Private Sub btnGerarLaudo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

        Dim isOk As Boolean = False
        Try
            If (generica.validaCampos(ucPreambulo)) Then
                geraLaudo()
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try

    End Sub


    Private Sub btnLimpa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Try
            ucPreambulo.limparCampos()
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub btnWord_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Try
            If registroGlobal.registroPincipal.NUM_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO Then
                generica.visualizaWord(nomeDiretorio, nomeDiretorio & ".doc")
            Else
                generica.visualizaWord(nomeDiretorio, nomeDiretorio & ".doc")
            End If


        Catch ex As Exception
            generica.gravaErro(ex)
        End Try

    End Sub

    Private Sub limpaCampos(Optional ByVal limpaGrid As Boolean = False)
        Try

            ' cmbCalibre.SelectedIndex = 0
            txtDiametro.Value = 0
            txtComprimento.Value = 0
            chkAcidental.Checked = False
            chkNormal.Checked = False
            chkPerdaMassa.Checked = False
            txtPeso.Value = 0
            cmbTipo.SelectedIndex = 0
            chkFragmento.Checked = False

            If limpaGrid Then
                gridCalibre.Rows.Clear()
            End If


        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub chamaEventoLimpaCampos(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickLimpaCampos
        Try
            ucPreambulo.limparCampos()
            generica.limpaControle(grpDadosMunicao)
            limpaCampos(True)
            ucPreambulo.populaDados()
            habilita(True, False, False, False, True)
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub chamaEventoGeraLaudo(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickGeraLaudo
        'Try
        '    For Each controle In pnlItens.Controls
        '        erro.SetError(controle, String.Empty)
        '    Next

        '    'COPIAR ESTE TRECHO
        '    Dim regBO As New registroBO
        '    Dim registroVOTemp As New registroVO
        '    Dim novoRegistro As Integer = 0
        '    registroVOTemp = regBO.getRegistroSimplificado(ucPreambulo.getNumeroLaudo, ucPreambulo.getAno)

        '    If registroVOTemp.NUM_REGISTRO > 0 And registroVOTemp.GEROULAUDO And ucPreambulo.ehNovo Then
        '        novoRegistro = regBO.getUltimoRegistro
        '        MsgBox("Laundo n° " & registroVOTemp.NUM_REGISTRO & " já foi inserido na base de dados por outro usuário logado no sistema. O laudo será gerado com o número " & novoRegistro)
        '        ucPreambulo.getNumeroLaudo = novoRegistro

        '    ElseIf registroVOTemp.NUM_REGISTRO > 0 And registroVOTemp.GEROULAUDO Then
        '        MsgBox("Laundo n° " & registroVOTemp.NUM_REGISTRO & " já foi atualizado na base de dados por outro usuário logado no sistema.")
        '        Exit Sub
        '    End If

        '    'FIM DO TRECHO

        '    If (generica.validaCampos(ucPreambulo)) Then
        '        If validaCampos() Then
        '            limpaMensagemErro()
        '            pb.Visible = True
        '            generica.salvaPreambulo(ucPreambulo)
        '            geraLaudo()
        '            If erroNivel > 0 Then
        '                If generica.rollBack(registroGlobal.registroPincipal, nomeDiretorio, erroNivel, ucPreambulo.ehNovo, ucPreambulo) Then
        '                    MsgBox("O sistema recuperou de um erro que impediu que o registro fosse inserido com sucesso no sistema. O laudo também não foi gerado. Entre em contato com o administrador do sistema.")
        '                    erroNivel = 0
        '                    ucPreambulo.btnNovoLaudo.PerformClick()
        '                End If

        '            Else
        '                habilita(False, False, True, False, False)
        '            End If

        '        End If
        '    End If

        'Catch ex As Exception
        '    generica.gravaErro(ex)
        'End Try


        For Each controle In pnlItens.Controls
            erro.SetError(controle, String.Empty)
        Next

        Try
            'COPIAR ESTE TRECHO
            Dim regBO As New registroBO
            Dim registroVOTemp As New registroVO
            Dim novoRegistro As Integer = 0
            registroVOTemp = regBO.getRegistroSimplificado(ucPreambulo.getNumeroLaudo, ucPreambulo.getAno)

            If registroVOTemp.NUM_REGISTRO > 0 And registroVOTemp.GEROULAUDO And ucPreambulo.ehNovo Then
                novoRegistro = regBO.getUltimoRegistro
                MsgBox("Laundo n° " & registroVOTemp.NUM_REGISTRO & " já foi inserido na base de dados por outro usuário logado no sistema. O laudo será gerado com o número " & novoRegistro)
                ucPreambulo.getNumeroLaudo = novoRegistro

            ElseIf registroVOTemp.NUM_REGISTRO > 0 And registroVOTemp.GEROULAUDO Then
                MsgBox("Laundo n° " & registroVOTemp.NUM_REGISTRO & " já foi atualizado na base de dados por outro usuário logado no sistema.")
                Exit Sub
            End If

            'FIM DO TRECHO

            If (generica.validaCampos(ucPreambulo)) Then
                If gridCalibre.Rows.Count = 0 Then
                    MsgBox("Adicione pelo menos uma substância na lista")

                Else
                    '------------------------------------------------------
                    ' BUSCA NO GRID SE OCORRERÁ A EXIBIÇÃO DE MAIS DE UM INVÓLUCRO
                    '------------------------------------------------------
                    'For Each linha As DataGridViewRow In gridDrogas.Rows
                    '    If CType(linha.Cells("EHPESOIGUAL").Value, Boolean) = True Then
                    '        temInvolucros = True
                    '        Exit For
                    '    Else
                    '        temInvolucros = False
                    '    End If
                    'Next

                    habilitaPainelInferior(False)
                    exibeInvolucro()
                End If
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try

    End Sub

    Private Sub habilitaPainelInferior(ByVal habilita As Boolean)
        pnlItens.Enabled = habilita
    End Sub
    Private Sub exibeInvolucro()

        Try
            pnlInvolucro.Visible = True
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub
    Private Function validaCampos() As Boolean
        Dim ok As Boolean = False
        If Not chkFragmento.Checked Then

            If cmbTipo.SelectedIndex = -1 Then
                erro.SetError(cmbCalibre, String.Empty)
                erro.SetError(cmbTipo, "Campo obrigatório")
            ElseIf txtPeso.Value <= 0 Then
                erro.SetError(cmbTipo, String.Empty)
                erro.SetError(txtPeso, "Campo obrigatório")
            Else
                erro.SetError(txtPeso, String.Empty)
                ok = True
            End If
        Else
            If txtPeso.Value <= 0 Then
                erro.SetError(txtPeso, "Campo obrigatório")
                ok = False
            Else '
                erro.SetError(txtPeso, String.Empty)
                ok = True
            End If
        End If
        Return ok
    End Function
    Private Sub chamaEventoVisualizaWord(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickVisualizaWord
        Try

            If registroGlobal.registroPincipal.NUM_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO Then
                generica.visualizaWord("", "", registroGlobal.registroPincipal.NOME_DIRETORIO)
            Else
                generica.visualizaWord(nomeDiretorio, nomeDiretorio & ".doc")
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub chamaEventoNovoLaudo(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickNovoLaudo
        Try
            ucPreambulo.limparCampos()
            limpaCampos(True)
            ucPreambulo.populaDados()
            habilita(True, False, False, False, True)
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub


    Public Sub chamaEventoBuscaLaudo(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickBuscaLaudo
        Try

            Dim itens_avaliacaoBO As New itens_avaliacaoBO

            ucPreambulo.buscaDadosLaudo(ucPreambulo, Me.MdiParent)


            If registroGlobal.registroPincipal.ID_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO Then
                habilita(False, , True, False)

            Else
                registroGlobal.IDregistroLock = registroGlobal.registroPincipal.ID_REGISTRO

                habilita(True, False, False, False, True)
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub
    Private Sub cmbCatalogo_Click(sender As Object, e As EventArgs) Handles cmbCatalogo.Click

        catalogo.Visible = True

    End Sub

    Private Sub catalogo_Click(sender As Object, e As EventArgs) Handles catalogo.Click
        catalogo.Visible = False

    End Sub

    'Private Sub cmbTipoArma_SelectedIndexChanged_1(sender As Object, e As EventArgs)
    '    Try

    '        Dim calibrebo As New calibreBO

    '        Dim tipo As Integer = 0

    '        Select Case cmbTipoArma.SelectedItem.ToString.ToUpper

    '            Case "REVÓLVER"
    '                tipo = 1
    '            Case "PISTOLA"
    '                tipo = 2
    '        End Select

    '        cmbCalibre.DisplayMember = "DESC_CALIBRE"
    '        cmbCalibre.ValueMember = "ID_CALIBRE"
    '        cmbCalibre.DataSource = calibrebo.getCalibres(tipo)

    '        If tipo = 1 Then

    '            cmbTipo.Items.Clear()
    '            cmbTipo.Items.Add("Não identificado")
    '            cmbTipo.Items.Add("CHPP - Chumbo ponta plana")
    '            cmbTipo.Items.Add("CSCV - Chumbo semi canto vivo")
    '            cmbTipo.Items.Add("CHCV - Chumbo ogival")
    '            cmbTipo.Items.Add("EXPO - Expansivo ponta oca")
    '            cmbTipo.Items.Add("EXPP - Enspansivo ponta plana")
    '            cmbTipo.Items.Add("ETPP - Encamisado total ponta plana")

    '        ElseIf tipo = 2 Then
    '            cmbTipo.Items.Clear()
    '            cmbTipo.Items.Add("Não identificado")
    '            cmbTipo.Items.Add("CHPP - Chumbo ponta plana")
    '            cmbTipo.Items.Add("CSCV - Chumbo semi canto vivo")
    '            cmbTipo.Items.Add("EXPO - Expansivo ponta oca")
    '            cmbTipo.Items.Add("EXPP - Enspansivo ponta plana")
    '            cmbTipo.Items.Add("ETPP - Encamisado total ponta plana")
    '            cmbTipo.Items.Add("ETOG - Encamisado total ogival")
    '            cmbTipo.Items.Add("EXPO - Encamisado ponta oca")
    '            cmbTipo.Items.Add("Frangível")

    '        End If



    '    Catch ex As Exception
    '        generica.gravaErro(ex)
    '    End Try
    'End Sub

    Private Sub ehFragmento(ByVal fragmento As Boolean)
        Try
            'cmbCalibre.Enabled = fragmento
            txtComprimento.Enabled = fragmento
            txtDiametro.Enabled = fragmento
            cmbTipo.Enabled = fragmento
            chkNormal.Enabled = fragmento
            chkAcidental.Enabled = fragmento
            chkPerdaMassa.Enabled = fragmento

        Catch ex As Exception
            generica.gravaErro(ex)
        End Try


    End Sub

    Private Sub btnAdiciona_Click_1(sender As Object, e As EventArgs) Handles btnAdiciona.Click

        Dim TEXTO As New StringBuilder
        Dim passou As Boolean = False
        Dim textoFinal As String = Nothing
        Dim deformacoes As New StringBuilder

        If validaCampos() Then


            For Each controle In Me.grpDadosMunicao.Controls
                If TypeOf controle Is CheckBox Then
                    If DirectCast(controle, CheckBox).Checked Then
                        passou = True
                        Exit For
                    End If
                End If
            Next

            If chkAcidental.Checked Then
                deformacoes.Append("acidentais")
            End If
            If chkNormal.Checked Then
                deformacoes.Append(", normais")
            End If
            If chkPerdaMassa.Checked Then
                deformacoes.Append(", perda de massa")
            End If
            Try

                If chkFragmento.Checked Then
                    TEXTO.Append("Tratava-se de 01(um) fragmento de projétil propelido por arma com peso bruto total de ").Append(generica.extensoDecimalQuimicaLegal(txtPeso.Value))
                Else

                    TEXTO.Append("Tratava-se de 01(um) projétil propelido por arma de fogo, com peso bruto total de ").Append(generica.extensoDecimalQuimicaLegal(txtPeso.Value))

                    If passou Then
                        TEXTO.Append(", com a presença de deformações ").Append(deformacoes).Append(", ")
                    End If
                    If txtDiametro.Value > 0 Then
                        TEXTO.Append(", diâmetro medindo ").Append(txtDiametro.Value).Append(" (").Append(generica.NumeroToExtenso(txtDiametro.Value)).Append(")").Append(" mm (milímetros), ")
                    End If
                    If txtComprimento.Value > 0 Then
                        TEXTO.Append(", comprimento de ").Append(txtComprimento.Value).Append(" (").Append(generica.NumeroToExtenso(txtComprimento.Value)).Append(")").Append(" mm (milímetros), ")
                    End If

                    TEXTO.Append(" e do tipo ")
                    TEXTO.Append(cmbTipo.Text).Append(".")
                End If

                ' textoFinal = generica.corrigeVirgulaDupla(TEXTO.ToString, ",")
                ' textoFinal = generica.corrigeVirgulaDupla(textoFinal, "e")
                gridCalibre.Rows.Add("MATERIAL " & generica.formataNumeroMaterial(gridCalibre.RowCount) & ": " & generica.corrigeVirgulaDupla(TEXTO.ToString), "MATERIAL " & generica.formataNumeroMaterial(gridCalibre.RowCount) & ": " & "O projétil encaminhado apresentava características compatíveis ao do calibre " & cmbCalibre.Text & ".")
                'gridCalibre.Rows.Add("MATERIAL " & generica.formataNumeroMaterial(gridCalibre.RowCount) & ": " & textoFinal.ToString, "MATERIAL " & generica.formataNumeroMaterial(gridCalibre.RowCount) & ": " & "O projétil encaminhado apresentava características compatíveis ao do calibre " & cmbCalibre.Text & ".")

                limpaCampos(False)
            Catch ex As Exception
                generica.gravaErro(ex)
            End Try
        End If
    End Sub
    Private Sub txtComprimento_ValueChanged(sender As Object, e As EventArgs) Handles txtComprimento.ValueChanged
        If txtComprimento.Value > 0 Then
            erro.SetError(txtComprimento, String.Empty)
        End If
    End Sub

    Private Sub txtDiametro_ValueChanged(sender As Object, e As EventArgs) Handles txtDiametro.ValueChanged
        If txtDiametro.Value > 0 Then
            erro.SetError(txtDiametro, String.Empty)
        End If
    End Sub

    Private Sub txtPeso_ValueChanged(sender As Object, e As EventArgs) Handles txtPeso.ValueChanged
        If txtPeso.Value >= 0 Then
            erro.SetError(txtPeso, String.Empty)
        Else
            erro.SetError(txtPeso, "Campo obrigatório")
        End If
    End Sub

    Private Sub limpaMensagemErro()
        erro.SetError(txtComprimento, String.Empty)
        erro.SetError(txtPeso, String.Empty)
        erro.SetError(txtPeso, String.Empty)
    End Sub

    Private Sub chkFragmento_CheckedChanged(sender As Object, e As EventArgs) Handles chkFragmento.CheckedChanged


        ehFragmento(Not chkFragmento.Checked)

    End Sub

    Private Sub gridCalibre_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles gridCalibre.CellContentClick
        Try
            gridCalibre.Rows.RemoveAt(e.RowIndex)
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub
    Private Sub cmbCalibre_SelectedIndexChanged(sender As Object, e As EventArgs)
        If cmbCalibre.SelectedIndex > -1 Then
            erro.SetError(cmbCalibre, String.Empty)
        Else
            erro.SetError(cmbCalibre, "Campo obrigatório")
        End If
    End Sub

    Private Sub cmbTipo_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbTipo.SelectedIndexChanged
        If cmbTipo.SelectedIndex > -1 Then
            erro.SetError(cmbTipo, String.Empty)
        Else
            erro.SetError(cmbTipo, "Campo obrigatório")
        End If
    End Sub

    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
        pnlInvolucro.Visible = False
        habilitaPainelInferior(True)
    End Sub

    Private Sub cmbInvolucro_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbInvolucro.SelectedIndexChanged
        If cmbInvolucro.Text.Equals("invólucro de segurança") Then
            txtInvolucroIC.Visible = True
            lbIc.Visible = True
        Else
            txtInvolucroIC.Visible = False
            lbIc.Visible = False
        End If
    End Sub

    Private Sub cmdOk_Click(sender As Object, e As EventArgs) Handles cmdOk.Click
        pnlInvolucro.Visible = False

        If Not gridCalibre.RowCount = 0 Then


            If generica.validaInvolucro(cmbInvolucro, txtInvolucroIC, erro) Then
                If (generica.validaCampos(ucPreambulo)) Then
                    If gridCalibre.Rows.Count = 0 Then
                        MsgBox("Adicione pelo menos uma substância na lista")

                    Else
                        pb.Visible = True
                        generica.salvaPreambulo(ucPreambulo)
                        geraLaudo()
                        If erroNivel > 0 Then
                            If generica.rollBack(registroGlobal.registroPincipal, nomeDiretorio, erroNivel, ucPreambulo.ehNovo, ucPreambulo) Then
                                MsgBox("O sistema recuperou de um erro grave e nenhuma informação foi gravada. Para registrar um novo laudo, clique em novo laudo")
                                erroNivel = 0
                                ucPreambulo.btnLimpaCampos.PerformClick()
                            End If
                        Else
                            ' ucPreambulo.txtDataEntrada.Enabled = False
                            habilita(False, , True, False, False)
                        End If

                    End If
                End If

            Else
                pnlInvolucro.Visible = True
            End If

        Else
            MsgBox("A lista com o(s) calibre(s) encontra-se vazia. Adicione pelo menos um calibre")

        End If

    End Sub

    Private Sub frmDeterminacaoCalibre_Load(sender As Object, e As EventArgs) Handles Me.Load
        Try

            Dim calibreBO As New calibreBO
            Dim tipoArmabo As New tipo_armaBO


            Me.WindowState = FormWindowState.Maximized
            generica.redimensionaControle(pnlDados)
            generica.redimensionaControle(pnlItens)
            ucPreambulo.ucPerito.Enabled = True
            ucPreambulo.selecionaIdTipoPericia = ucPreambulo.ID_TIPO_PERICIA

            cmbCalibre.DisplayMember = "CALIBRE"
            cmbCalibre.ValueMember = "ID_CALIBRE"
            cmbCalibre.DataSource = calibreBO.getTodosCalibres


            ucPreambulo.lblTitulo.Text = "DETERMINAÇÃO DE CALIBRE"
            ucPreambulo.selecionaIdNatureza = ucPreambulo.ID_NATUREZA
            ucPreambulo.pnlNatureza.Enabled = False



            cmbTipo.Items.Clear()
            cmbTipo.Items.Add("Não identificado")
            cmbTipo.Items.Add("CHPP - Chumbo ponta plana")
            cmbTipo.Items.Add("CSCV - Chumbo semi canto vivo")
            cmbTipo.Items.Add("CHCV - Chumbo ogival")
            cmbTipo.Items.Add("EXPO - Expansivo ponta oca")
            cmbTipo.Items.Add("EXPP - Enspansivo ponta plana")
            cmbTipo.Items.Add("ETPP - Encamisado total ponta plana")
            cmbTipo.Items.Add("ETOG - Encamisado total ogival")
            cmbTipo.Items.Add("Frangível")
            Me.AcceptButton = btnAdiciona

            Me.ControlBox = False
            If generica.gravaBanco Then
                ucPreambulo.btnBuscaLaudo.Enabled = True
            Else
                ucPreambulo.btnBuscaLaudo.Enabled = False
            End If


        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub
End Class